home *** CD-ROM | disk | FTP | other *** search
-
- /* i frequently use these functions and i don't want to include a whole ansi lib ...
- */
-
- #include "kio.h"
- #include "mem.h"
-
-
- /* copy memory, may overlap
- */
- void *memmove ( void *zz, const void *qq, long n )
- { Char *z,*q,*x;
-
- if (n<=0) return zz;
-
- x=(Char*)zz + n;
-
- if (zz<qq)
- { q = (Char*)qq;
- z = (Char*)zz;
- for (;n;--n) *z++ = *q++;
- }
- else
- { q = (Char*)qq + n;
- z = (Char*)zz + n;
- for (;n;--n) *--z = *--q;
- };
-
- return x;
- }
-
-
- /* copy memory, may not overlap
- */
- void* memcpy ( void *zz, const void *qq, long n )
- { Char *z,*q;
-
- if (n<=0) return zz;
-
- q = (Char*)qq;
- z = (Char*)zz;
-
- for (;n;--n) *(Char*)z++ = *(Char*)q++;
-
- return z;
- }
-
-
- /* compare memory; return 0 if equal, >0 if zz>qq, <0 if zz<qq
- */
- long memcmp ( const void *zz, const void *qq, long n )
- { Char *z,*q;
-
- if (n<=0) return 0;
-
- q = (Char*)qq;
- z = (Char*)zz;
-
- for (;n && *q==*z; --n) { q++;z++; }
-
- if (n) return *q-*z;
- return 0;
- }
-
-
- /* search for character; return nil or pointer
- */
- void* memchr ( const void *zz, Char c, long n )
- { Char *z;
-
- if (n<=0) return nil;
-
- z = (Char*)zz;
-
- for (; n && *z!=c; --n) z++;
-
- if (n) return z;
- return nil;
- }
-
-
- /* clear memory with character
- */
- void* memset ( void *zz, Char c, long n )
- { Char *z;
-
- if (n<=0) return zz;
-
- z = (Char*)zz;
-
- for (; n; --n) *z++ = c;
-
- return z;
- }
-
-
-
-
-